package org.agile4j.patterns.command.calculator;

/**
 * 具体的加法命名实现对象
 * @author user
 *
 */
public class AddCommand implements Command {
	/**
	 * 持有具体执行计算的对象
	 */
	private OperationApi operation = null ;
	/**
	 * 操作的数据, 也就是要加上的数据
	 */
	private int opeNum ;
	
	/**
	 * 传入具体执行计算的对象
	 * @param operation 具体执行计算的对象
	 * @param opeNum 要加上的数据
	 */
	public AddCommand(OperationApi operation, int opeNum) {
		this.operation = operation ;
		this.opeNum = opeNum ;
	}
	
	@Override
	public void execute() {
		// 转调接收者真正执行功能,这个命令是做加法
		this.operation.add(opeNum);
	}

	@Override
	public void undo() {
		// 转调接收者真正执行功能,
		// 命令本身是加法, 那么侧小的时候就是做减法
		this.operation.substract(opeNum);
	}

}
